from PIL import Image
import pytesseract
import cv2
import numpy as np
import os

# 设置Tesseract路径（如果需要）
pytesseract.pytesseract.tesseract_cmd = r'/usr/local/Cellar/tesseract/5.5.0/bin/tesseract'


def save_words_as_images(image_path, output_folder):
    # 打开图像文件
    image = Image.open(image_path)

    # 使用Tesseract获取带有边界框信息的数据
    data = pytesseract.image_to_data(image, lang='eng', output_type=pytesseract.Output.DICT)

    # 创建输出文件夹（如果不存在）
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍历每个单词并保存为小图片
    for i in range(len(data['text'])):
        word = data['text'][i]
        if word.strip():  # 只处理非空单词
            left, top, width, height = data['left'][i], data['top'][i], data['width'][i], data['height'][i]
            right, bottom = left + width, top + height

            # 裁剪单词区域
            cropped_image = image.crop((left, top, right, bottom))

            # 保存裁剪后的图像
            cropped_image.save(os.path.join(output_folder, f"word_{i}.png"))


# 使用函数
save_words_as_images('test-note.jpg', 'output_folder')
